home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Format CD 47
/
Amiga Format AFCD47 (Issue 131, Xmas 1999).iso
/
-screenplay-
/
shareware
/
mre
/
missile.amos
/
missile.amosSourceCode
< prev
next >
Wrap
AMOS Source Code
|
1999-10-04
|
11KB
|
333 lines
'**********************************************
'* Missile Command � Mr E Software
'**********************************************
Randomize Timer
If Ntsc Then N=-56
Unpack 8 To 0 : Palette 0,0,0,0
Volume 63 : Led Off
Make Mask
'
Wait Vbl
C1$="(16,1,1)"
'
Hide
Change Mouse 4
Limit Mouse 112,50 To 464,241+N
'
'
Dim BASE(7),MISX(27),MISY(27),CLR(7)
'
For F=0 To 27 : Read MISX(F),MISY(F) : Next F
Data 27,14,23,14,19,14,15,14,11,14,7,14,3,14,25,12,21,12,17,12,13,12,9,12,5,12
Data 23,10,19,10,15,10,11,10,7,10,21,8,17,8,13,8,9,8,19,6,15,6,11,6,17,4,13,4,15,2
For F=0 To 7 : Read CLR(F) : Next F
Data $181,$881,$118,$818,$188,$888,$333,$811
'
NEWGAME:
Do
Hide
Set Rainbow 0,0,16,"","",""
Unpack 8 To 0
Pen 2 : Paper 0
Print At(1,24);"SCORE:";SCORE;
Print At(31,24);"WAVE:";WVE;
While Mouse Click=0 : Wend
While Mouse Key : Wend
Fade 1 : Wait 15
Screen Open 0,352,260,8,Lowres
Screen Display 0,112,42+N,352,256
Curs Off : Flash Off
Get Sprite Palette
For F=0 To 39 : Set Bob F,-1,, : Next F
Synchro Off : Update Off
INITAMAL
X Mouse=280 : Y Mouse=162
Show On
WVE=0
EXTRA=10000
SCORE=0
For F=0 To 7 : BASE(F)=-1 : Next F : BASE=6
BASE(2)=28 : BASE(5)=28
Cls 6,0,240 To 352,256
Pen 3 : Paper 6
Print At(0,31);" SCORE:";SCORE;
Flash 3,"(ccc,2)(bdd,2)(aee,2)(dbd,2)(eae,2)(ddb,2)(eea,2)"
While BASE
Inc WVE
Wait Vbl
Cls 1,0,0 To 336,224
Cls 6,0,240 To 336,248
For X=0 To 5 : Swap BASE(Rnd(2)*3+Rnd(1)),BASE(Rnd(2)*3+Rnd(1)) : Next X
For X=0 To 7
If BASE(X)
If X=2 or X=5
Paste Bob X*40+12,224,3
Else
Paste Bob X*40+12,224,2
End If
Else
Cls 1,X*40+12,224 To X*40+44,240
End If
Next X
'
Amal On
'
Ink 1
Amreg(4)=WVE+39 : If Amreg(4)>64 Then Amreg(4)=64
Amreg(5)=0
Print At(32,31);"WAVE:";WVE;
'missile speed RI,RJ
Amreg(22)=WVE
'
R$="" : G$="" : B$="" : C=$111
If(WVE and 1) Then R$=C1$ : Add C,$600
If(WVE and 2) Then G$=C1$ : Add C,$60
If(WVE and 4) Then B$=C1$ : Add C,$6
Set Rainbow 0,1,258,R$,G$,B$
Rainbow 0,0,Y Hard(0)-N/2,257
Colour 2,CLR(WVE and 7) : Colour 6,C
For F=0 To 8
Sam Play 1,5,9999 : Wait 2
Sam Play 4,5,9999 : Wait 2
Sam Play 2,5,9999 : Wait 2
Sam Play 8,5,9999 : Wait 4
Next F
MAIN:
V=1 : S=0 : SS=Amreg(4)*100 : Amreg(10)=0
For F=0 To 99
Repeat
Repeat
If Inkey$<>"" Then Print At(17,31);"PAUSED"; : X=X Mouse : Y=Y Mouse : While Inkey$<>"" : Wend : While Inkey$="" : X Mouse=X : Y Mouse=Y : Wend : Print At(17,31);" ";
Z=Execall(-132)
Add S,1,0 To 50 : If S=1 and Amreg(5) Then Sam Play 8,4,SS
If Amreg(13) Then Sam Play V,Amreg(13) : Add V,V,1 To 4 : Amreg(13)=0
If Amreg(12)
If BASE(Amreg(12))
Dec BASE(Amreg(12))
X=MISX(BASE(Amreg(12)))+Amreg(12)*40+12 : Y=MISY(BASE(Amreg(12)))+224
Cls 6,X,Y To X+2,Y+2
Amreg(12)=-1
Sam Play V,1 : Add V,V,1 To 4
Else
Amreg(12)=0 : Sam Play V,6 : Add V,V,1 To 4
End If
End If
While Timer-T<2 : Wend : T=Timer
If Amreg(3)
Sam Play V,2 : Add V,V,1 To 4
M=Amreg(3)
Draw Amreg(M,6),Amreg(M,7) To Amreg(M,8),Amreg(M,9)
Draw Amreg(M,6)+1,Amreg(M,7) To Amreg(M,8)+1,Amreg(M,9)
Draw Amreg(M,6)-1,Amreg(M,7) To Amreg(M,8)-1,Amreg(M,9)
Draw Amreg(M,6)+2,Amreg(M,7) To Amreg(M,8)+2,Amreg(M,9)
Draw Amreg(M,6)-2,Amreg(M,7) To Amreg(M,8)-2,Amreg(M,9)
Draw Amreg(M,6)+3,Amreg(M,7) To Amreg(M,8)+3,Amreg(M,9)
Amreg(3)=0
End If
Synchro : Update
Amreg(20)=Amreg(20)+1
If Amreg(1) Then Paste Bob Amreg(0),Amreg(1),28 : Amreg(1)=0
If Amreg(2)<0
Sam Stop : Sam Play 15,3
Amreg(0,0)=1 : Screen Display 0,,Amreg(0,1),,
X=-Amreg(2)/40
If BASE(X)
BASE(X)=0
If X<>2 and X<>5
Dec BASE
End If
If BASE(2)+BASE(5)=0 and BASE=0
Amreg(4)=0
End If
End If
Amreg(2)=0
End If
If Amreg(18)
Add SCORE,Amreg(18) : Print At(7,31);SCORE; : Amreg(18)=0
End If
Z=Execall(-138)
Until Amreg(4)=0
Until Amreg(5)=0
Wait Vbl
Amreg(12)=0
Next F
If BASE or(BASE=0 and BASE(2)>0 or BASE(5)>0) or SCORE>EXTRA Then Gosub BONUS
Wend
Cls 1,0,0 To 336,224
Pen 3 : Ink 3 : Paper 1
Wait 50
Sam Play 1,3,8000 : Sam Play 2,3,6000 : Sam Play 4,3,7000 : Sam Play 8,3,4000
For X=1 To 192
Colour 3,CLR(X and 7)
Amreg(24)=Rnd(X)-X/2+112 : Amreg(23)=Rnd(X)-X/2+168
Wait Vbl : Synchro : Update
Next X
For X=1 To 250
Colour 3,CLR(X and 7)
Wait Vbl : Synchro : Update
Print At(17,17);"THE END"
Next X
Loop
'
Procedure INITAMAL
'
Channel 1 To Bob 1
Bob 1,0,280,40
A$=" S: P; If RW<4 J S; If RE=0 J S; L RE=RE-1; L RF=RF+1;"
A$=A$+" For R0=0 To 100; P; N R0;"
A$=A$+" L R0=Z(255)+Z(63)+Z(15)*64; L Y=0-Z(63);"
A$=A$+"C: L R2=Z(7)*40+28*64;"
A$=A$+" L R4=2; L R9=4;"
A$=A$+" L R1=224-Y/R4; L R1=R2-R0/R1; If R1<-64 J C; If R1>64 J C;"
A$=A$+" L A=40;"
A$=A$+"M: L R0=R0+R1; L X=R0/64; L Y=Y+R4;"
A$=A$+" If BC(1,20,39) J A; L R9=4;"
A$=A$+"N: P; If Y<228 J M; "
A$=A$+"V: P; If RC J V; L RC=X; J X;"
A$=A$+"W: P; If RY J W; L RX=R0/64;L RY=Y; L RS=RS+50;"
A$=A$+"X: L A=41; P; L A=26; L Y=256; L RF=RF-1; L RN=2; J S;"
A$=A$+"A: L R9=R9-1; If R9=0 J W; L Y=Y-R4-R4; L R0=R0-R1-R1; J N;"
Amal 1,A$
'
Channel 2 To Bob 2
Bob 2,0,280,44
A$=" S: P; If RW<6 J S; If RE=0 J S; L RE=RE-1; L RF=RF+1;"
A$=A$+" For R0=0 To 75; P; N R0;"
A$=A$+" L R0=Z(1); L R3=RW<10+1; L R3=R3*Z(2);"
A$=A$+" L R2=R0*2-1; L R3=R3&2;"
A$=A$+" L A=R0*$8000+44-R3; L X=R0*-400+368; L Y=R3*40+70;"
A$=A$+" L RR=-3;"
A$=A$+" For R1=0 To 400;"
A$=A$+" If BC(2,20,39) J W; L X=X+R2; L RP=X; L RQ=Y+8;"
A$=A$+" If X&63 J O; If RR<>-3 J O; L RR=3;"
A$=A$+"O: N R1; J X;"
A$=A$+"W: P; If RY J W; L RX=X; L RY=Y; L RS=25*R3+150+RS; "
A$=A$+" L A=R0*$8000+45-R3; L RN=3; P;"
A$=A$+"X: L RF=RF-1; P; L A=26; L RP=999; L X=0; L Y=259; J S;"
Amal 2,A$
'
For F=3 To 7
Channel F To Bob F
Bob F,0,280,33
A$=" L: P; If RC<1 J L; L X=RC/40*40+12; L Y=224; L RC=0-RC;"
A$=A$+" A 1,(33,3)(34,3)(35,3)(36,3)(37,3)(38,3)(39,1)(26,0); M 0,0,20; L Y=256; J L;"
Amal F,A$
Next F
'
MISSILES:
For F=8 To 19
Channel F To Bob F
Bob F,0,280,26
If F<25 Then A$="P;" Else A$=""
A$=A$+"L RK=0; L: L A=26; P;"
A$=A$+" If RR>0 J A;"
A$=A$+" If RE=0 J L;"
A$=A$+" If RK J D;"
A$=A$+" L RE=RE-1; L RF=RF+1;"
A$=A$+" L R4=RW>23&1; L R4=RW>31&2+R4;"
A$=A$+" L R6=0-RW>39; L R6=Z(RW>3)&1+R6; L R6=Z(RW>7)&1+R6;"
A$=A$+" L R4=R6+2+Z(R4);"
A$=A$+" L R6=Z(31)*10+13; L Y=-32-Z(31)*R4; "
A$=A$+"C: P; L R2=Z(7)*40+28*64;"
A$=A$+" L R0=R6*64; L R7=Y-2;"
A$=A$+" L R1=224-Y/R4; L R1=R2-R0/R1; If R1<-120 J C; If R1>120 J C;"
A$=A$+" L R3=29; If R1<-64*R4 J M; L R3=31; If R1>64*R4 J M; L R3=30;"
A$=A$+"M: L R0=R0+R1; L X=R0/64; L Y=Y+R4;"
A$=A$+" If BC("+Str$(F)+",20,39) J W;"
A$=A$+" If Y<32 J O; If Y>160 J O; If Z(15) J O; L RI=X; L RJ=Y; L RK=R4;"
A$=A$+"O: L A=32; P; L A=R3; P; If Y<223 J M; "
A$=A$+"V: P; If RC J V; L RC=X; J X;"
A$=A$+"W: L RK=0; P; If RY J W; L RX=R0/64;L RY=Y; L RS=RS+50;"
A$=A$+"X: P; If RD J X; L R8=X; L R9=Y; L RD="+Str$(F)+";"
A$=A$+" L Y=256; L RF=RF-1; J L;"
A$=A$+"A: L RR=RR-1;"
A$=A$+" B: P; If RR>0 J B; L RR=RR-1;"
A$=A$+" If RP<24 J L; If RP>312 J L;"
A$=A$+" L RF=RF+1;"
A$=A$+" L R6=RP; L Y=RQ; L R4=2; J C;"
A$=A$+"D: L R6=RI; L Y=RJ; L R4=RK; L RK=0; L RF=RF+1; J C;"
Amal F,A$
Next F
'
CLOUDS:
For F=20 To 39
Channel F To Bob F
Bob F,0,0,26
A$="L: P; If RY=0 J L; L A=4; L X=RX; L Y=RY; L RY=0; P;"
A$=A$+"A 1,(4,1)(5,2)(6,2)(7,2)(8,2)(9,2)(10,2)(11,2)(12,2)(13,2)(14,2)(15,2)"
A$=A$+" (16,2)(17,2)(18,2)(19,2)(20,2)(21,2)(22,2)(23,2)(24,1)(25,1)(26,1);"
A$=A$+" M 0,0,41; L Y=256; L A=26; J L;"
Amal F,A$
Next F
'
For F=1 To 7
Channel F+39 To Sprite F
Sprite F,0,0,26
A$="L RM=0; L A=27; L: P; L R0=K2+1; If R0|K1=0 J Off; If RZ J L;"
A$=A$+" L RM=R0*3+2; W: P; If RM>0 J W; If RM=0 J L; L RM=0;"
A$=A$+" L X=120*R0+219; L Y=YH(0,221); L RZ=-1; "
A$=A$+" L R0=XM; L R1=YM; L RA=XS(0,R0)-2; L RB=YS(0,R1)-2; M R0-X,R1-Y,Y-R1/6;"
A$=A$+"X: If RY J X; L RX=XS(0,R0); L RY=YS(0,R1); L Y=0; J L;"
A$=A$+"Off: L RZ=0; J L;"
Amal F+39,A$
Next F
'
Channel 0 To Screen Display 0
Amal 0,"L R1=YH(0,0); L: P; If R0=0 J L; For R0=1 To 8; M 0,9-R0,2; M 0,R0-9,2 ;Next R0; L R0=0; M 0,R1-Y,8; J L;"
'
End Proc
'
BONUS:
Paper 1 : Pen 3
Print At(2,12);"20 X";At(1,17);"200 X"
Centre At(,6)+"ATTACK WAVE"+Str$(WVE)+" COMPLETED"
Pen 2
Centre At(,9)+"B O N U S"
Pen 3 : Paper 6
B=60
For F=2 To 5 Step 3
While BASE(F)
Dec BASE(F)
X=MISX(BASE(F))+F*40+12 : Y=MISY(BASE(F))+224
Cls 6,X,Y To X+2,Y+2
Paste Bob B,97,46
Add B,5
Add SCORE,20 : Print At(7,31);SCORE;
Sam Play 1,5 : Wait 2 : Sam Play 2,5 : Add V,1,1 To 2
Wait 2
Wend
Next F
'
A=-1 : B=60
For F=0 To 6 Step 3
For X=F To F+1
If BASE(X)
Cls 1,X*40+12,224 To X*40+44,240
Paste Bob B,132,2
Add B,40
Add SCORE,200 : Print At(7,31);SCORE;
Sam Play 1,5,7000 : Wait 3 : Sam Play 2,5,7000
Wait 7
Else
A=X
End If
Next X
Next F
BASE(2)=28 : BASE(5)=28
If SCORE>EXTRA
EXTRA=EXTRA+10000
If A>-1
BASE(A)=-1 : Inc BASE
Paper 1 : Centre At(,21)+" B O N U S C I T Y" : Paper 6
Paste Bob 152,184,2
Wait 10
V=1 : For F=1 To 32 : Sam Play V,6,Rnd(4000)+8000 : Wait 5 : Add V,V,1 To 4 : Next F
End If
End If
Wait 250
Return
'